package com.patterns.proxy.dynamicProxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * Created by Xiao Yiyun on 2017/4/23.
 * 动态代理
 * 动态代理类，实现了InvocationHandler接口
 * 作用是产生一个对象的代理对象
 * 其中，InvocationHandler是JDK提供的动态代理接口
 */
public class GamePlayIH implements InvocationHandler {
    //被代理
    Class aClass = null;
    //被代理的实例
    Object object = null;
    //通过构造器来传递我要代理的类
    public GamePlayIH(Object object) {
        this.object = object;
    }
    //调用被代理的方法
    //proxy：所代理的真实实现对象
    //method：所要调用的真实实现对象的某个方法的Method对象
    //args：调用真实实现对象某个方法时接受的参数
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        Object result = method.invoke(this.object, args);
        //如果是登录方法，则发送消息
        if (method.getName().equalsIgnoreCase("login")) {
            System.out.println("有人在用我的账号登录！");
        }
        return result;
    }
}
